package 基础;
//实例内部类
class OuterClass1{
    public int a =1;
    private int b = 2;
    int c = 3;
    int d = 4;
 class  InnerClass{
        int d =2;
//        static int h = 19;//报错，
//静态成员的初始化和使用不依赖于对象，而非静态内部类又依赖于外部类的对象。冲突
        static final int hh= 19;
        //相当于常量，不会改变
        void fun1(){
            System.out.println(d);//2
            System.out.println(OuterClass1.this.d);//4
            System.out.println(c);
        }
    }
    void fun1(){
        System.out.println(a);//1
        System.out.println(d);//4
        //访问内部类成员，需要创建对象
        InnerClass innerClass = new InnerClass();
        System.out.println(innerClass.hh);
    }
}

public class InnerClass_2 {
    public static void main(String[] args) {
//        方法1
        OuterClass1 outerClass1 = new OuterClass1();
        outerClass1.fun1();
        System.out.println("==============");
        //获取实例内部类对象的时候 依赖外部类对象
        OuterClass1.InnerClass innerClass = outerClass1.new InnerClass();
        innerClass.fun1();
        System.out.println("=================");
//        方法2
        OuterClass1.InnerClass innerClass1 = new OuterClass1().new InnerClass();
        innerClass1.fun1();

    }
}
